package com.kulian.Signalling.system.service;

public interface CallControlService {
    /**
     * 发起呼叫
     * @param caller 主叫方用户名
     * @param callee 被叫方用户名
     */
    void initiateCall(String caller, String callee);

    /**
     * 接受呼叫
     * @param callee 被叫方用户名
     * @param caller 主叫方用户名 
     */
    void acceptCall(String callee, String caller);

    /**
     * 拒绝呼叫
     * @param callee 被叫方用户名
     * @param caller 主叫方用户名
     * @param reason 拒绝原因
     */
    void rejectCall(String callee, String caller, String reason);

    /**
     * 挂断呼叫
     * @param userId 用户ID
     * @param callId 呼叫ID
     */
    void endCall(String userId, String callId);

    /**
     * 发送媒体协商信息
     * @param userId 用户ID
     * @param callId 呼叫ID
     * @param sdpOffer SDP offer
     */
    void sendMediaOffer(String userId, String callId, String sdpOffer);

    /**
     * 发送ICE候选
     * @param userId 用户ID
     * @param callId 呼叫ID
     * @param candidate ICE候选信息
     */
    void sendIceCandidate(String userId, String callId, String candidate);
}
